package com.ccp.dev.system.dao;

import com.ccp.dev.core.basic.base.IBaseMapper;
import com.ccp.dev.core.basic.web.query.QueryFilter;
import com.ccp.dev.system.model.SysRole;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 角色dao
 * @author y
 */
@Mapper
public interface SysRoleDao extends IBaseMapper<SysRole,String> {
    /**
     * 判断角色别名是否存在
     * @param map 参数
     * @return int
     */
    int isExistRoleAlias(Map map);

    /**
     * 获取三员角色
     * @param roleType 三员角色类型 可不填
     * @return list
     */
    List<SysRole> queryThreeMemberRole(Short roleType);

    /**
     * 获取去重后的分类
     * @param queryFilter
     * @return list
     */
    List<String> queryDistinctCategory(@Param("currentOrgId") String currentOrgId,@Param("orgIdList") List<String> orgIdList,@Param("defaultRole") String defaultRole);

    /**
     * 根据用户id获取其的角色
     * @param userId 用户id
     * @return list
     */
    List<SysRole> queryByUserId(String userId);

    /**
     * 根据条件查询list
     * @param queryFilter 参数
     * @return list
     */
    List<SysRole> queryRolesByOrgId(QueryFilter queryFilter);

    /**
     * 根据条件查询list
     * @param map 参数
     * @return list
     */
    List<SysRole> queryRolesByOrgId(Map map);

    /**
     * 查询本级租户下的普通角色
     * @param map 参数
     * @return list
     */
    List<SysRole> queryCommonRolesByTenantId(Map map);

    /**
     * 查询本级租户下的普通角色
     * @param map 参数
     * @return list
     */
    List<SysRole> querySwitchRoleBySystemId(Map map);

    /**
     * 根据角色id查询角色名
     * @param ids id数组
     * @return list
     */
    List<String> queryRoleNameByRoleIds(List<String> ids);

    /**
     * 根据角色名称查询角色
     * @param roleName
     * @return
     */
    List<SysRole> queryByRoleName(String roleName);

    /**
     * 根据完整角色别名查询角色信息
     * @param roleAlias
     * @return
     */
    SysRole getRoleByAllRoleAlias(String roleAlias);

    /**
     * 根据角色别名查询角色信息
     * @param roleAlias
     * @return
     */
    SysRole getRoleByRoleAlias(String roleAlias);

    /**
     * 根据租户id和分类获取默认角色
     * @param map 租户id与角色分类
     * @return 查询到的角色信息
     */
    SysRole queryIsDefaultRole(Map<String,Object> map);
}